package GPSChallenge.juego;

import java.io.File;
import java.io.IOException;

import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;

import GPSChallenge.Ciudad;
import GPSChallenge.Jugador;
import GPSChallenge.bandera.BanderaACuadros;
import GPSChallenge.movimiento.ContadorDeMovimientos;
import GPSChallenge.movimiento.Posicion;
import GPSChallenge.vehiculo.Estado;
import GPSChallenge.vehiculo.Vehiculo;

public class JuegoEnFacil extends Juego{

	public JuegoEnFacil(Estado unEstado, Jugador unJugador) {
		
		this.vehiculo = new Vehiculo(unEstado, new Posicion(5,0));
		
		this.jugador = unJugador;
		this.ciudad=null;
		SAXBuilder builder = new SAXBuilder();
		Document doc;
		try {
			doc = builder.build(new File("./src/ciudadFacil.xml"));
			this.ciudad = new Ciudad(doc.getRootElement());
		
		} catch (JDOMException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		this.ciudad.obtenerCruceEnLaPosicion(new Posicion(5,9)).setBandera(new BanderaACuadros());
		
		ContadorDeMovimientos.obtenerInstancia().establecerMaximoDeMovimientos(80);
	
	}
	
	public JuegoEnFacil(Document juego, Document ciudad1){
		Element juego1=juego.getRootElement();
		ContadorDeMovimientos.obtenerInstancia().establecerCantidadDeMovimientosHechos(Integer.parseInt(juego1.getAttributeValue("movimientosHechos")));
		Element vehic =juego1.getChild("vehiculo");
		this.vehiculo= new Vehiculo(this.obtenerEstadoDeUnVehiculo(vehic.getAttributeValue("estado")), new Posicion(vehic.getChild("posicion")));
		this.ciudad = new Ciudad(ciudad1.getRootElement());
		this.jugador = new Jugador(juego1.getChild("Jugador"));
		this.ciudad.obtenerCruceEnLaPosicion(new Posicion(5,9)).setBandera(new BanderaACuadros());
		ContadorDeMovimientos.obtenerInstancia().establecerMaximoDeMovimientos(80);
	}

	public int obtenerPuntajeDeJugador(){
	
		return (this.jugador.obtenerPuntaje());
		
	}
	
	protected void setPuntajeFinalEnELJugador(){
		
		this.jugador.setPuntajeFinal(this.jugador.obtenerPuntaje()*3);
		
	}

}
